home *** CD-ROM | disk | FTP | other *** search
AMOS Source Code | 1996-01-26 | 2.0 KB | 61 lines |
- ' AMOSPRO
- '
- ' *******************************************************
- ' *** ***
- ' *** Stencil Procedure ***
- ' *** ***
- ' *** by ***
- ' *** ***
- ' *** Joseph Bolin ***
- ' *** ***
- ' ********************************************************
-
- Dim STENCIL(64)
- Screen Open 0,320,200,8,Lowres
- STENCIL(2)=1
- STENCIL(1)=0
- STENCIL(0)=1
- Ink 2 : Bar 0,0 To 63,63 : Ink 0 : Bar 64,64 To 128,128
- _STENCIL[0,1]
- Flash Off
- For C=0 To 7
- Cls C : Paste Bob 0,0,1 : Wait 60
- Next
-
- Procedure _STENCIL[_SOURCE,_DESTBOB]
-
- ' Inputs: _SOURCE Screen to stencil
- ' _DESTBOB Bob to make into stencil
- ' STENCIL() Colors to stencil:0=No,1=Yes
- '
- ' Outputs: Makes a bob from the source screen with the unstenciled colors
- ' masked out
-
- Shared STENCIL()
- For DEST=0 To 7
- Trap Screen DEST : If Errtrap>0 Then Exit
- Next
- If DEST>7 Then Error 47
- Screen _SOURCE
- Screen Open DEST,Screen Width,Screen Height,Screen Colour,Screen Mode
- Screen Hide DEST : Screen Copy _SOURCE To DEST : Screen DEST
- For BNK=10 To 65535
- If Length(B)=0 Then Exit
- Next
- Reserve As Work BNK,64
- For C=0 To Screen Colour-1
- If STENCIL(C)=1 Then Poke Start(BNK)+C,1 Else Poke Start(BNK)+C,0
- Next
- WASHML[Screen Base,Start(BNK),0,7,Screen Width,Screen Height]
- Get Bob _DESTBOB,0,0 To Screen Width,Screen Height : Paste Bob 0,0,_DESTBOB
- Screen Close DEST
- SBASE=Sprite Base(_DESTBOB) : Screen _SOURCE
- SIZE=Deek(SBASE)*2*Deek(SBASE+2)
- For P=0 To Deek(SBASE+4)-1
- SB=SBASE+8+SIZE*P : SP=Leek(Screen Base+P*4)
- Copy SP,SP+SIZE To SB+2
- Next
- End Proc
- Procedure WASHML[H,W,B,O,BB,SB]
- ' COMPILED PROCEDURE -- can't convert this to AMOS code
- End Proc